package com.category.douyijia.dao;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.category.douyijia.model.Session;
import com.jfinal.aop.Aop;
import com.jfinal.kit.StrKit;

/**
 * 自定义session，
 * 仅用于保存用户登录信息，
 * session仅限于数据的增、删、查，
 * 由于session登录时只会生成一次，
 * 在登录之后不需要进行修改
 * @author JunfengLiu
 * date time：2021-8-10 09:13:00
 */
public class SessionDao {
	/**
	 * 创建一个sessionIOC对象
	 */
	private Session session = Aop.get(Session.class);
	/**
	 * 创建Session的集合对象
	 */
	private List<Session> sessionList = new ArrayList<Session>();
	/**
	 * 创建保存结果的变量
	 */
	private boolean result = false;
	/**
	 * 创建Date日期对象
	 */
	private Date date;
	/**
	 * 创建格式化日期对象
	 */
	private SimpleDateFormat simpleDateFormat;
	/**
	 * 创建Calender动态日期对象
	 */
	private Calendar calendar = Aop.get(Calendar.class);
	/**
	 * 通过sessionID查找session信息
	 * @param sessionId
	 * id编号
	 * @return
	 * 返回自定义session对象
	 */
	public Session selectBySessionId(String sessionId){
		if (!StrKit.isBlank(sessionId)) {
			session = session.dao().findById(sessionId);
		}
		return session;
	}
	/**
	 * 通过用户登录ID查找session登录信息
	 * @param userId
	 * 用户sessionID
	 * @return
	 * session集合
	 */
	public List<Session> selectByUserId(String userId){
		if (!StrKit.isBlank(userId)) {
			sessionList = session.dao().find("select * from session where accountId = ?", userId);
		}
		return sessionList;
	}
	/**
	 * 查找所有session信息
	 * @return
	 * session集合
	 */
	public List<Session> selectAll(){
		sessionList = session.dao().findAll();
		return sessionList;
	}
	/**
	 * 通过用户ID添加Session会话
	 * @param userId
	 * 用户ID
	 * @param userSession
	 * session对象
	 * @return
	 * 添加结果
	 */
	public boolean insertSession(String userId,Session userSession){
		if (userSession != null && userSession.getAccountId().equals(userId)) {
			result = session.dao()._setAttrs(userSession).save();
		}
		return result;
	}
	/**
	 * 通过sessionID删除会话，
	 * 在退出登录时执行
	 * @param userId
	 * sessionID编号
	 * @return
	 * 删除结果
	 */
	public boolean deleteSessionById(String userId){
		if (!StrKit.isBlank(userId)) {
			session = (Session)selectByUserId(userId);
		}
		if (session != null) {
			result = session.dao().deleteById(session.getId());
		}
		return result;
	}
}
